package com.example.controller;

import com.example.entity.Host;
import com.example.entity.Order;
import com.example.service.HostService;
import com.example.service.OrderService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;

import java.util.List;

/**
 * 管理员控制器，处理与管理员相关的请求，如查看主机列表、删除主机和查看订单列表
 */
@Controller
@RequestMapping("/Admin")
public class AdminController {
    // 自动注入主机服务
    @Autowired
    private HostService hostService;

    // 自动注入订单服务
    @Autowired
    private OrderService orderService;

    /**
     * 获取主机列表并显示在页面上
     * @param model 用于向视图传递数据
     * @return 显示主机列表的页面路径
     */
    @GetMapping("/hostList")
    public String hostListByUserId(Model model){
        // 调用主机服务获取主机列表
        List<Host> hostListByUserId =hostService.hostListByUserId();

        // 打印主机列表信息
        System.out.println("家庭信息hostListByUserId："+ hostListByUserId);

        // 将主机列表添加到模型中，以便在视图中显示
        model.addAttribute("hostList", hostListByUserId);

        return "user/hostList";
    }

    /**
     * 删除指定ID的主机
     * @param family_id 主机的家庭ID
     * @return 重定向到主机列表页面
     */
    @GetMapping("/delete")
    public String deleteHost(Integer family_id){
        // 调用主机服务删除主机
        hostService.deleteHost(family_id);

        return "redirect:/Admin/hostList";
    }

    /**
     * 获取所有订单列表并显示在页面上
     * @param model 用于向视图传递数据
     * @return 显示订单列表的页面路径
     */
    @GetMapping("/orderList")
    public String orderList(Model model) {
        // 调用订单服务获取所有订单列表
        List<Order> orders = orderService.getAllOrders();

        // 将订单列表添加到模型中，以便在视图中显示
        model.addAttribute("orders", orders);

        return "admin/orderList";
    }
}